キャッシュ・グループのレプリケート
キャッシュ・グループは、キャッシュ・グループまたは標準のTimesTen表にレプリケートできます。まず、キャッシュ・グループ、次にレプリケーション・スキームを設定します。
注意: 自動リフレッシュ・キャッシュ・グループ間にレプリケーションは設定しないでください。自動リフレッシュ・キャッシュ・グループは、Oracleから更新を直接受信します。
キャッシュ・グループは、次のいずれかの方法でレプリケートできます。
ttRepAdminによるキャッシュ・グループのレプリケーションの設定
キャッシュ・グループを複製するには、-duplicateオプションを指定してttRepAdminユーティリティを使用し、キャッシュ・グループが含まれているデータ・ストアを複製します。-duplicateオプションには、-keepCGおよび-noKeepCGの2つオプションがあります。-keepCGオプションを使用すると、キャッシュ・グループの複製時にキャッシュ・グループの定義が保持されます。-noKeepCGオプションを使用すると、キャッシュ・グループの定義は保持されません。この場合、複製時にキャッシュ・グループ表が標準のTimesTen表に変換されます。
ttRepAdmin -duplicate -keepCGは、キャッシュ・グループ間のレプリケーションの設定、またキャッシュ・グループが含まれているマスター・データ・ストアで障害が発生した場合に適用されるフェイルオーバーで使用します。
ttRepAdmin -duplicate -noKeepCGは、ロード・バランシングのためにキャッシュ・グループと標準のTimesTen表間のレプリケーションを設定する場合に使用します。
次の項では、ttRepAdmin -duplicateの-keepCGおよび-noKeepCGオプションの使用例を示します。
双方向ホット・スタンバイ自動リフレッシュ・キャッシュ・グループ: -keepCGオプション
この使用例では、マスター・データ・ストアに自動リフレッシュ・キャッシュ・グループ、およびキャッシュ・グループに属していないTimesTen表が含まれています。-keepCGオプションを使用すると、自動リフレッシュ・キャッシュ・グループの定義を保持したサブスクライバ・データ・ストアを作成できます。
キャッシュ・グループは、Oracleから直接自動リフレッシュされるように設定する必要があります。これによって、データの可用性が保証されます。キャッシュ・グループに属していないTimesTen表は、マスター・データ・ストアとサブスクライバ・データ・ストア間のレプリケーション・スキームに含める必要があります。
図3.4を参照してください。
図3.4 双方向ホット・スタンバイ自動リフレッシュ・キャッシュ・グループ
同じ自動リフレッシュ・キャッシュ・グループが含まれている双方向ホット・スタンバイ・データ・ストアのペアを設定するには、次の手順を実行します。
- マスター・データ・ストアを作成します。
- マスター・データ・ストアのキャッシュ・エージェントを起動します。
- マスター・データ・ストア、およびサブスクライバ・データ・ストアが作成されるノードに自動リフレッシュ・キャッシュ・グループを作成します。
- レプリケーション・スキームを作成します。
- マスター・データ・ストアのレプリケーション・エージェントを起動します。
- -keepCGオプションを指定してttRepAdmin -duplicateを使用し、サブスクライバ・データ・ストアを作成します。-keepCGオプションを使用すると、サブスクライバ・データ・ストア用の自動リフレッシュ・オブジェクトがOracleデータベースに設定されます。キャッシュ・グループは自動リフレッシュであるため、キャッシュ管理ユーザーIDおよびパスワードを入力する必要があります。
- サブスクライバ・データ・ストアのレプリケーション・エージェントを起動します。
- サブスクライバ・データ・ストアのキャッシュ・エージェントを起動します。
マスター・データ・ストア障害からリカバリするには、マスター・データ・ストアでステップ6から8までを実行します。
双方向ホット・スタンバイWRITETHROUGHキャッシュ・グループ: -keepCGオプション
この使用例では、マスター・データ・ストアにASYNCHRONOUS WRITETHROUGHキャッシュ・グループまたはSYNCHRONOUS WRITETHROUGHキャッシュ・グループが含まれています。-keepCGオプションを使用すると、WRITETHROUGHキャッシュ・グループの定義を保持したサブスクライバ・データ・ストアを作成できます。図3.5を参照してください。
図3.5 双方向ホット・スタンバイWRITETHROUGHキャッシュ・グループ
同じWRITETHROUGHキャッシュ・グループが含まれている双方向ホット・スタンバイ・データ・ストアのペアを設定するには、次の手順を実行します。
- マスター・データ・ストアを作成します。
- WRITETHROUGHキャッシュ・グループがASYNCHRONOUSである場合は、キャッシュ管理ユーザーIDおよびパスワードを登録します。
- マスター・データ・ストア、およびサブスクライバ・データ・ストアが作成されるノードにWRITETHROUGHキャッシュ・グループを作成します。
- マスター・データ・ストアのレプリケーション・エージェントを起動します。
- 北eepCGオプションを指定してttRepAdmin -duplicateを使用し、サブスクライバ・データ・ストアを作成します。-keepCGオプションを使用すると、サブスクライバ・データ・ストア用のAWTオブジェクトがOracleデータベースに設定されます。キャッシュ・グループが自動リフレッシュまたはAWTの場合は、キャッシュ管理ユーザーIDおよびパスワードを入力する必要があります。
- サブスクライバ・データ・ストアのレプリケーション・エージェントを起動します。
WRITETHROUGHキャッシュ・グループがASYNCHRONOUSの場合は、マスター・データ・ストアで障害が発生した後、サブスクライバ・データ・ストアとOracleデータベースが異なるレプリケーション状態になることがあります。アプリケーションで、トランザクションの一部を再実行して、それらを同じ状態にする必要がある場合があります。
マスター・データ・ストア障害からリカバリするには、マスター・データ・ストアでステップ5および6を実行します。
ロード・バランシング自動リフレッシュ・キャッシュ・グループ: -noKeepCGオプション
この使用例では、マスター・データ・ストアにOracleデータベースからの変更を受信する自動リフレッシュ・キャッシュ・グループが含まれています。マスター・データ・ストアは、読取り専用アクセス用のサブスクライバ・データ・ストアにレプリケートされます。サブスクライバ・データ・ストアには、キャッシュ・グループに属していないTimesTen表が含まれます。自動リフレッシュは、マスター・データ・ストアでのみ実行されます。サブスクライバ・データ・ストアはOracleデータベースと通信しないため、Oracleクライアントがインストールされていない場合があります。図3.6を参照してください。
図3.6 ロード・バランシング自動リフレッシュ・キャッシュ・グループ
ロード・バランシング自動リフレッシュ・キャッシュ・グループに対するレプリケーションを設定するには、次の手順を実行します。
- マスター・データ・ストアを作成します。
- マスター・データ・ストアのキャッシュ・エージェントを起動します。
- マスター・データ・ストアで自動リフレッシュ・キャッシュ・グループを作成します。
- レプリケーション・スキームを作成します。
- マスター・データ・ストアのレプリケーション・エージェントを起動します。
- -noKeepCGオプションを指定してttRepAdmin -duplicateを使用し、サブスクライバ・データ・ストアを作成します。
- サブスクライバ・データ・ストアのレプリケーション・エージェントを起動します。
CREATE CACHE GROUPによるキャッシュ・グループのレプリケーションの設定
キャッシュ・グループ間にレプリケーションを設定するもう1つの方法として、CREATE CACHE GROUP文で両方のキャッシュ・グループを作成してから、レプリケーション・スキームを設定する方法があります。両方のキャッシュ・グループで同じグループ・タイプを指定する必要があります。たとえば、READONLYキャッシュ・グループは、別のREADONLYキャッシュ・グループにのみレプリケートできます。また、CREATE CACHE GROUP文で指定するキャッシュ・グループ属性も同じである必要があります。ただし、AUTOREFRESH、READONLYおよびPROPAGATE属性は例外です(「キャッシュ・グループ間の単方向レプリケーション」および「キャッシュ・グループ間の双方向レプリケーション」を参照)。
キャッシュ・グループ間の単方向レプリケーション
キャッシュ・グループを単方向レプリケーション・スキームでレプリケートする場合は、マスター・データ・ストアのキャッシュ・グループのみでAUTOREFRESHを指定できます。サブスクライバ・データ・ストアのキャッシュ・グループではAUTOREFRESHを無効にする必要があります。
表3.1に、レプリケーション・データ・ストアで指定可能なキャッシュ・グループ設定の概要を示します。
表3.1 キャッシュ・グループ間の単方向レプリケーション
マスター・キャッシュ・グループの設定
|
サブスクライバ・キャッシュ・グループの設定
|
制限
|
読取り専用キャッシュ・グループ | 読取り専用キャッシュ・グループ | サブスクライバで、AUTOREFRESH STATE OFFを指定する必要があります。 |
WRITETHROUGHキャッシュ・グループ | WRITETHROUGHキャッシュ・グループ | 制限なし。 |
読取り専用表での自動リフレッシュ | 読取り専用表での自動リフレッシュ | サブスクライバで、AUTOREFRESH STATE OFFを指定する必要があります。 |
伝播される表を含む | 伝播される表を含む | 制限なし。 |
伝播されない表を含む | 制限なし。 |
エージング | エージング | 期間を同じにする必要があります。 |
双方向に伝播される表を含む | 双方向に伝播される表を含む | マスターおよびサブスクライバで、AUTOREFRESH STATE OFFを指定する必要があります。 |
伝播されない表を含む | 制限なし。 |
伝播されない表を含む | 伝播されない表を含む | 制限なし。 |
伝播される表を含む | 制限なし。 |
注意: WHERE句は、マスター・キャッシュ・グループとサブスクライバ・キャッシュ・グループに対して同じである必要があります。
詳細は次のとおりです。
- READONLYキャッシュ・グループ: キャッシュ・グループがロードされるとAUTOREFRESHはONに設定されるため、サブスクライバ・データ・ストアのREADONLYキャッシュ・グループでは、CREATE CACHE GROUP文にAUTOREFRESH STATE OFFを指定して、AUTOREFRESHを明示的に無効にする必要があります。
- SYNCHRONOUS WRITETHROUGHキャッシュ・グループ: レプリケーションに関する問題はありません。
- ASYNCHRONOUS WRITETHROUGHキャッシュ・グループ: レプリケーションに関する問題はありません。
- USERMANAGEDキャッシュ・グループ
- マスター・キャッシュ・グループでAUTOREFRESH STATE ONを指定した場合は、サブスクライバ・キャッシュ・グループでAUTOREFRESH STATE OFFを指定し、サブスクライバ・キャッシュ・グループのすべての表をREADONLYとして指定する必要があります。
- マスター・キャッシュ・グループおよびサブスクライバ・キャッシュ・グループでAUTOREFRESHおよびPROPAGATEを指定した場合は、自動リフレッシュ状態をOFFにする必要があります。
- マスター・キャッシュ・グループでAUTOREFRESH STATE ONおよびPROPAGATEを指定した場合は、サブスクライバ・キャッシュ・グループでAUTOREFRESH STATE OFFを指定する必要があります。
キャッシュ・グループをレプリケートする単方向レプリケーション・スキームの例は、「キャッシュ・グループ・レプリケーション・スキーム」を参照してください。
キャッシュ・グループ間の双方向レプリケーション
キャッシュ・グループを双方向レプリケーション・スキームでレプリケートする場合、キャッシュ・グループの1つのみでAUTOREFRESHを指定できます。
詳細は次のとおりです。
- READONLYキャッシュ・グループ: 両方のキャッシュ・グループで、AUTOREFRESH STATE OFFを指定する必要があります。
- SYNCHRONOUS WRITETHROUGHキャッシュ・グループ: レプリケーションに関する問題はありません。
- ASYNCHRONOUS WRITETHROUGHキャッシュ・グループ: レプリケーションに関する問題はありません。
- USERMANAGEDキャッシュ・グループ: 両方のキャッシュ・グループで、AUTOREFRESH STATE OFFを指定する必要があります。
注意: レプリケーション・エージェントは、ALTER CACHE GROUPによって行われた変更を認識しません。ALTER CACHE GROUPを使用してAUTOREFRESH STATEを再設定した場合は、レプリケーション・エージェントを再起動する必要があります。